const Koa = require('koa');
const app = new Koa();

// 第一个中间件
app.use(async (ctx, next) => {
    console.log('第一个中间件：开始执行');
    // 执行下一个中间件
    await next();
    console.log('第一个中间件：执行完成');
});

// 第二个中间件
app.use(async (ctx, next) => {
    console.log('第二个中间件：开始执行');
    // 执行下一个中间件
    await next();
    console.log('第二个中间件：执行完成');
});

// 第三个中间件
app.use(async (ctx, next) => {
    console.log('第三个中间件：开始执行');
    // 这里不调用 next 了，因为它是最后一个中间件
    console.log('第三个中间件：设置响应体');
    ctx.body = 'Hello, Koa!';
    console.log('第三个中间件：执行完成');
});

const port = 3004;
app.listen(port, () => {
    console.log(`Server is running on http://localhost:${port}`);
});